/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package nextel.visita.rms;
 
import javax.microedition.rms.RecordEnumeration;
import nextel.visita.bean.FotoBean;
import nextel.visita.rms.listener.ListenerRMSFoto;
import pe.com.nextel.rms.GestorRMS;
import pe.com.nextel.rms.Persistente;

/**
 *
 * @author jcampana
 */
public class RMSFoto extends GestorRMS {

    private ListenerRMSFoto listener;
    private boolean available = false;
    
    private boolean flagParalizarEncio = false; // para paralizar el envio
    
    public RMSFoto() {
        super("RMS_FOTO");
        isSicronizado = true;
    }

    protected Persistente createObjectBean() {
        return new FotoBean();
    }

    public void asignarListener(ListenerRMSFoto plistaner) {
        this.listener = plistaner;
    }
    
    public void grabarFoto(FotoBean bean) throws Exception {
        try {
            // paraliza el envio
            flagParalizarEncio = true;
            abrirRS();
            guardar(bean);
        } finally {
            cerrarRS();
        }
    }

    public void eliminarFoto(FotoBean bean) throws Exception {
        try {
            abrirRS();
            deleteRecord(bean.getIdRecodset());
        } finally {
            cerrarRS();
        }
    }

    public synchronized void procesarFotos() throws Exception {
       // System.out.println("RMSFOTO - procesarFotos");

        try {

            abrirRS();
            // No paraliza el envio
            flagParalizarEncio = false;
            //FotoBean foto = new FotoBean();
            RecordEnumeration en = enumerateRecords();
            while (en.hasNextElement() && !flagParalizarEncio) {
               // System.out.println("en el for de fotos");
                FotoBean foto = new FotoBean( );
    //            System.out.println("se obtiene la foto");
                int id = en.nextRecordId();
                byte[] arrByte = getRecord(id);

                foto.readObject(arrByte);
                foto.setIdRecodset(id);
                
//                System.out.println("*****************************");
//                System.out.println("foto.codigoNextel():  " + foto.getIdRecodset());
//                System.out.println("foto.getIdUsuario():  " + foto.idUsuario);
//                System.out.println("foto.fecha():  " + foto.fecha);  
//                
//                System.out.println("*****************************");

              //  System.out.println("enviando foto");
                listener.enviarFoto(foto);
              //  System.out.println("termino el envío");
                
      //          System.out.println("listener.envioCorrecto()=" + listener.envioCorrecto());
                if (listener.envioCorrecto()) {
              //      System.out.println("eliminando foto");
      //              System.out.println("IdRecordset de foto a eliminar : " + foto.getIdRecodset());
                    deleteRecord(foto.getIdRecodset());
                }

                foto.clear();
                foto = null;
                
                System.gc();
            }
        } finally {
            cerrarRS();
            System.gc();
        }
    }
}
